#! /usr/bin/env python3
# -*- coding: utf-8 -*-

"""
数组
"""


class Array:
    """
    一个包装List的简单宿主，支持插入、删除、按照下标随机访问操作的数据结构
    数组中的数据是任意类型的
    """

    def __init__(self, capacity: int = 10):
        """初始化方法，capacity表示数组容量"""
        self._data = []
        self._capacity = capacity

    def __len__(self) -> int:
        return len(self._data)

    def __iter__(self):
        for item in self._data:
            yield item

    def __repr__(self):
        return str(self._data)

    def insert(self, index: int, value: int) -> bool:
        """
        数据插入数据操作
        :param index: 将要插入的下标
        :param value: 将要插入的数据
        :return: 插入成功，返回True
                 插入失败，返回False
        """
        if index < 0 or index >= self._capacity:
            return False
        else:
            self._data.insert(index, value)
            return True

    def find(self, index: int) -> object:
        """
        根据索引，找到数据中的元素并返回
        :param index: 将要查找的数据的下标
        :return: 查看成功返回数据，如果角标越界，则返回False
        """
        if index < 0 or index >= len(self):
            return -1
        return self._data[index]

    def delete(self, index: int) -> bool:
        """
        根据索引，删除数组中元素
        :param index: 将要删除的数据的下标
        :return: 删除成功，返回True
                 删除失败，返回False
        """
        if index < 0 or index >= len(self):
            return False
        self._data.pop(index)
        return True


if __name__ == '__main__':
    array = Array()
    array.insert(0, 10)
    array.insert(1, 20)
    array.insert(4, 30)
    array.insert(2, 100)
    print(array)
